<?php
define('SUCCESS_MESSAGE', 'ok');
/**
 * 递归创建目录 
 * @param string  $dir    目录 
 * @return 
 */
if(!function_exists('make_dir')){
	function makeDir( $dir ){  
		return  is_dir ( $dir ) or make_dir(dirname( $dir )) and  mkdir ( $dir , 0777);
	} 
}
/**
 * 数据格式化树形结构
 * @param array   $items  待转化数据
 * @param string  $id     主键
 * @param string  $pid    关联字段
 * @param string  $son    保存的子元素
 * @return array
 */
if(!function_exists('get_tree')){
	function getTree($items,$id='id',$pid='parent_id',$son = 'children'){
		$tree = array(); //格式化的树
		$tmpMap = array(); //临时扁平数据
			
		foreach ($items as $item) {
			$tmpMap[$item[$id]] = $item;
		}
			
		foreach ($items as $item) {
			if (isset($tmpMap[$item[$pid]])) {
				$tmpMap[$item[$pid]][$son][] = &$tmpMap[$item[$id]];
			} else {
				$tree[] = &$tmpMap[$item[$id]];
			}
		}
		unset($tmpMap);
		return $tree;
	}
}

if(!function_exists('field2Upper')){
	function field2Upper($data){
		if (is_object($data)) {
			$data = $data->toArray();
		}
		if (!is_iterable($data)) return $data;
		$hData = [];
		foreach ($data as $k => $d) {
			if (is_object($d)) $d = $d->toArray();
            
            if (is_iterable($d)) {
                $hData[ucFirstKey($k)] = field2Upper($d);
            }else{
            	if (is_numeric($k) || false === strpos($k, '_')) {
                    $hData[$k] = $d;
                    continue;
                }
                $hData[ucFirstKey($k)] = $d;
            }
		}
		return $hData;
	}
}

/**
 *
 */
if (!function_exists('ucFirstKey')) {

    /**
     * @param $key
     * @return string
     */
    function ucFirstKey($key)
    {
        if (is_int($key)) return $key;
        $kSet = explode('_', $key);
        $fk   = array_shift($kSet);
        $tk   = '';
        foreach ($kSet as $k) {
            $tk .= ucfirst($k);
        }
        return $tk ? $fk . $tk : $key;
    }
}